<?php

if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
global $data;

class Portada extends CI_Controller {

    public function __construct() {
        parent::__construct();
        //redireccion segura
        if ($this->session->userdata('access') != 'grant') {
            redirect(base_url());
        }
        global $data;
        $data['responsableNombre'] = $this->session->userdata('responsableNombre');
        $data['place'] = 'portada';
        $this->stats();
    }

    public function stats() {
        global $data;
        $data['acceso'] = $this->ciempies_model->lista_accesos();
        $data['tcolab'] = $this->ciempies_model->get_total('COLABORADOR');
        $data['ttutorial'] = $this->ciempies_model->get_total('TUTORIAL');
        $data['therramienta'] = $this->ciempies_model->get_total('HERRAMIENTA');
        $data['tuso_herramienta'] = $this->ciempies_model->get_total('uso_herramienta');
        $data['tvisita'] = $this->ciempies_model->get_total('visita');
    }

    public function menu($opc) {
        global $data;

        $data['mensaje'] = $this->session->userdata('mensaje');

        $this->load->view('template/header', $data);
        $this->load->view('template/sidebar');
        switch ($opc) {
            case 'editar_mena':
                $data['resp'] = $this->ciempies_model->datos_responsable(1);
                $this->load->view('portada/content_edita', $data);
                break;
            case 'editar_abel':
                $data['resp'] = $this->ciempies_model->datos_responsable(2);
                $this->load->view('portada/content_edita', $data);
                break;
            case 'editar_intro':
                $data['portada'] = $this->ciempies_model->datos_portada();
                $this->load->view('portada/content_intro', $data);
                break;
        }
        $this->load->view('template/footer');

        # reiniciamos la variable
        $this->session->unset_userdata('mensaje');
    }

    public function actualizar_responsable() {

        $notify_good = '<div class="alert alert-success" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong>Bien!</strong> Los cambios fueron guardados con éxito.
                    </div>';

        $notify_bad = '<div class="alert alert-error" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong> Cuidado! </strong> Se detectaron errores en el formulario
                    </div>';

        if ($this->input->post('id') == 1) {
            $destino = "editar_mena";
        }
        if ($this->input->post('id') == 2) {
            $destino = "editar_abel";
        }
        $this->form_validation->set_rules('nombre', 'Descripcion es', 'required|trim|xss_clean');
        $this->form_validation->set_rules('correo', 'Descripcion en', 'required|trim|xss_clean');
        $this->form_validation->set_rules('bio_es', 'biografia es', 'required|trim|xss_clean');
        $this->form_validation->set_rules('bio_en', 'biografia en', 'required|trim|xss_clean');


        //verificamos formulario en busca de errores de ususario
        if (!($this->input->post('actualizar_bio') && $this->form_validation->run())) {

            $this->session->set_userdata('mensaje', $notify_bad);
            redirect(base_url() . "portada/menu/$destino");
        }
        //formulario correcto, subimos la imagen
        $config['upload_path'] = './assets/uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size'] = '2048';
        $config['max_width'] = '3000';
        $config['max_height'] = '3000';
        $config['overwrite'] = FALSE;
        $config['remove_spaces'] = TRUE;
        $config['encrypt_name'] = TRUE;

        $this->load->library('upload', $config);
        //SI LA IMAGEN FALLA AL SUBIR MOSTRAMOS EL ERROR EN LA VISTA UPLOAD_VIEW
        if (!$this->upload->do_upload('imagen')) {

            $resp = array(
                'nombre' => $this->input->post('nombre'),
                'correo' => $this->input->post('correo'),
                'bio_es' => $this->input->post('bio_es'),
                'bio_en' => $this->input->post('bio_en'),
                'url' => $this->input->post('url'),
                'id' => $this->input->post('id')
            );

            # la imagen no se actualizo
            if ($this->upload->display_errors() == '<p>You did not select a file to upload.</p>') {
                //la iamgen no cambio, se actualizan los campos con los nuevos datos
                $this->ciempies_model->actualizar_resp($resp);

                $this->session->set_userdata('mensaje', $notify_good);
                redirect(base_url() . "portada/menu/$destino");
            }

            $notify_file = '<div class="alert alert-error" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong>Cuidado!</strong> No se pudieron guardar los cambios :' . $this->upload->display_errors() . ' </div>';

            $this->session->set_userdata('mensaje', $notify_file);
            redirect(base_url() . "portada/menu/$destino");
        }

        //la imagen se subio correctamente, procedemos con la insercion en la base
        $file_info = $this->upload->data();
        $this->_create_thumbnail($file_info['file_name'], FALSE, 'assets/uploads/responsable/');

        //el formulario esta correcto,aterrizamos las variables
        $resp = array(
            'nombre' => $this->input->post('nombre'),
            'correo' => $this->input->post('correo'),
            'bio_es' => $this->input->post('bio_es'),
            'bio_en' => $this->input->post('bio_en'),
            'url' => $file_info['file_name'],
            'id' => $this->input->post('id')
        );
        # actualizamos en la base
        $this->ciempies_model->actualizar_resp($resp);
        //eliminamos imagen pasada
        unlink('assets/uploads/responsable/' . $this->input->post('url'));

        $this->session->set_userdata('mensaje', $notify_good);
        redirect(base_url() . "portada/menu/$destino");
    }

    # FUNCIÓN PARA CREAR LA MINIATURA A LA MEDIDA QUE LE DIGAMOS

    public function _create_thumbnail($filename, $ratio, $destino) {
        $config['image_library'] = 'gd2';

        //CARPETA EN LA QUE ESTÁ LA IMAGEN A REDIMENSIONAR
        $config['source_image'] = 'assets/uploads/' . $filename;
        $config['create_thumb'] = FALSE;
        $config['maintain_ratio'] = $ratio;

        //CARPETA EN LA QUE GUARDAMOS LA MINIATURA
        $config['new_image'] = $destino;
        $config['width'] = 180;
        $config['height'] = 260;
        $this->load->library('image_lib');
        $this->image_lib->initialize($config);
        $this->image_lib->resize();
        //borramos la original

        unlink($config['source_image']);
    }

    public function actualizar_portada() {

        $notify_good = '<div class="alert alert-success" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong>Bien!</strong> La portada se actualizó correctamente.
                    </div>';

        $notify_bad = '<div class="alert alert-error" style="margin-top: 16px;">
                        <button type="button" class="close" data-dismiss="alert">×</button>
                        <strong> Cuidado! </strong> Se detectaron errores en el formulario
                    </div>';

        $this->form_validation->set_rules('intro_es', 'introducción es', 'required|trim|xss_clean');
        $this->form_validation->set_rules('intro_en', 'introducción en', 'required|trim|xss_clean');

        //verificamos formulario en busca de errores de ususario
        if (!($this->input->post('actualizar_portada') && $this->form_validation->run())) {

            $this->session->set_userdata('mensaje', $notify_bad);
            redirect(base_url() . "portada/menu/editar_intro");
        }

        $portada = array(
            'intro_es' => $this->input->post('intro_es'),
            'intro_en' => $this->input->post('intro_en'),
            'id' => $this->input->post('id')
        );
        # actualizamos en la base
        $this->ciempies_model->actualizar_portada($portada);
        $this->session->set_userdata('mensaje', $notify_good);
        redirect(base_url() . "portada/menu/editar_intro");
    }

}
